|
Special member functions in C++ are functions which the compiler will automatically generate if they are used, but not declared explicitly by the programmer. The automatically generated special member functions are: * Default constructor if no other constructor is explicitly declared * Copy constructor if no move constructor and move assignment operator are explicitly declared. : If a destructor is declared generation of a copy constructor is deprecated (C++11, proposal N3242 〔http://accu.org/index.php/journals/1896〕). * Move constructor if no copy constructor, copy assignment operator, move assignment operator and destructor are explicitly declared. * Copy assignment operator if no move constructor and move assignment operator are explicitly declared. : If a destructor is declared generation of a copy assignment operator is deprecated. * Move assignment operator if no copy constructor, copy assignment operator, move constructor and destructor are explicitly declared. * Destructor In these cases the compiler generated versions of these functions perform a ''memberwise'' operation. For example the compiler generated destructor will destroy each sub-object (base class or member) of the object. The compiler generated functions will be public , non-virtual〔Except for the destructor if a base class already has a virtual destructor.〕 and the copy constructor and assignment operators will receive const& parameters (and not be of the alternative legal forms).==Example== The following example depicts two classes: Explicit for which all C++98 special member functions are explicitly declared and Implicit for which none are declared. 抄文引用元・出典: フリー百科事典『 ウィキペディア(Wikipedia)』 ■ウィキペディアで「special member functions」の詳細全文を読む スポンサード リンク
|